package Algorithm;

public class test11 {
    // 给定一个二进制数组 nums 和一个整数 k，如果可以翻转最多 k个 0 ，则返回数组中连续 1的最大个数
    // 算法原理: 滑动窗口, 同向双指针
    public static void main(String[] args) {
        int[] nums = {1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0};
        int n = nums.length, left = 0, right = 0, k = 2;
        int zero = 0, len = 0;
        // 进窗口
        while (right < n) {
            // 判断
            if (nums[right] == 0) {
                zero++;
            }
            while (zero > k) {
                // 出窗口
                if (nums[left] == 0) {
                    zero--;
                }
                left++;
            }
            // 更新结果
            len = Math.max(len, right - left + 1);
            right++;
        }
        System.out.println(len);
    }
}
